home *** CD-ROM | disk | FTP | other *** search
/ Aminet 1 (Walnut Creek) / Aminet - June 1993 [Walnut Creek].iso / usenet / sources / volume89 / fonts / fonz.1 next >
Internet Message Format  |  1989-05-10  |  19KB

  1. Path: xanth!ames!oliveb!sun!swap!page
  2. From: page%swap@Sun.COM (Bob Page)
  3. Newsgroups: comp.sources.amiga
  4. Subject: v89i121:  fonz - set font on custom screen
  5. Message-ID: <104013@sun.Eng.Sun.COM>
  6. Date: 10 May 89 03:45:48 GMT
  7. Sender: news@sun.Eng.Sun.COM
  8. Lines: 502
  9. Approved: page@sun.com
  10.  
  11. Submitted-by: mott@ucscb.ucsc.edu (Hung H. Le)
  12. Posting-number: Volume 89, Issue 121
  13. Archive-name: fonts/fonz.1
  14.  
  15. "fonz" can be used to set the font for program that opens its own
  16. screen.  I use it mainly to set the font of "Handshake" to something
  17. other than topaz.  A doc page is enclosed.
  18.  
  19. [uuencoded executable included.  ..bob]
  20.  
  21. # This is a shell archive.
  22. # Remove anything above and including the cut line.
  23. # Then run the rest of the file through 'sh'.
  24. # Unpacked files will be owned by you and have default permissions.
  25. #----cut here-----cut here-----cut here-----cut here----#
  26. #!/bin/sh
  27. # shar: SHell ARchive
  28. # Run the following text through 'sh' to create:
  29. #    fonz.c
  30. #    fonz.doc
  31. #    fonz.uu
  32. # This is archive 1 of a 1-part kit.
  33. # This archive created: Tue May  9 20:40:07 1989
  34. echo "extracting fonz.c"
  35. sed 's/^X//' << \SHAR_EOF > fonz.c
  36. X/*
  37. X * fonz - setfont for program that opens its own screen
  38. X *
  39. X * April 18, 1989
  40. X * A hack to subtitute my own font for Handshake.
  41. X * With a little more work, could be turn into a general purpose
  42. X * setfont for program openning its own screen. I am too lazy to do it.
  43. X *
  44. X * April 19, 1989
  45. X * Let's rename it "fonz".
  46. X * Make necessary changes so that "fonz" can be used in general.
  47. X * Usage: %s [-s font_size] [-w wait_max] font_name screen [window]
  48. X *            -s font_size: default to 8
  49. X *            -w wait_max: number of times to go around the wait loop
  50. X *            font_name: name of font
  51. X *            screen: screen name
  52. X *            window: name
  53. X * With no argument:
  54. X *    "fonz" printed out all the screens each followed by its windows
  55. X *
  56. X * If no window is specified, "fonz" will pick out the first NULL window
  57. X *
  58. X * April 20, 1989
  59. X * Let's call thist Version 1.0
  60. X * Bug found:
  61. X *    Use the [-w] flag, "run" the application. For example,
  62. X * runback c:fonz -w 12 clean Handshake; run df2:c/handshake
  63. X * Now, do something in your CLI while the application is loaded.
  64. X * Do a "status", for example, "fonz" will pretend that it does its job
  65. X * and exist but no font is changed to the application's window.
  66. X *
  67. X * Fix:
  68. X *     I don't know the reason for the bug. Attempt to fix by "delaying"
  69. X * 10 secs before do SetFont(). Seems to work OK now.
  70. X * If you know why please let me know.
  71. X *
  72. X * Hung Le (mott@ucscb.ucsc.edu)
  73. X *  
  74. X * compiled under Manx v3.4a (someday I will upgrade ... )
  75. X * 1> cc fonz.c 
  76. X * 1> ln fonz.o -lc 
  77. X */
  78. X
  79. X#include <intuition/intuitionbase.h>
  80. X#include <libraries/diskfont.h>
  81. X#include <graphics/rastport.h>
  82. X#include <graphics/text.h>
  83. X#include <functions.h>
  84. X#include <stdio.h>
  85. X
  86. X#define INTUI_REV 0L
  87. X#define usage(n) fprintf(stderr,"Usage: %s [-s font_size] [-w wait_max] font_name screen [window]\n", n)
  88. X/* 500 ticks */
  89. X#define TEN_SECS 500L
  90. X
  91. Xstruct IntuitionBase *IntuitionBase = 0L;
  92. Xstruct Window *Window = 0L;
  93. Xstruct TextFont *Font = 0L;
  94. Xlong DiskfontBase = 0L;
  95. Xlong GfxBase = 0L;
  96. X
  97. Xint Font_Size = 0;
  98. Xint Wait_Max = 0;
  99. X
  100. X/* not parsing workbench */
  101. X_wb_parse() {}
  102. X
  103. Xmain(ac,av)
  104. Xint ac;
  105. Xchar *av[];
  106. X{
  107. X    char my_name[20];
  108. X
  109. X    strcpy(my_name, av[0]);
  110. X
  111. X    /* Open the necessary libraries */
  112. X    Open_Libs();
  113. X
  114. X    if (ac == 1)
  115. X        print_windows();
  116. X    else    
  117. X    {
  118. X        /* two global variables: Font_Size and Wait_Max are set */
  119. X        while (av[1][0] == '-')
  120. X        {
  121. X            if (strcmp(av[1], "-s") == 0)
  122. X            {
  123. X                Font_Size = atoi(av[2]);
  124. X                ac -= 2; av += 2;
  125. X            }
  126. X            else if (strcmp(av[1], "-w") == 0)
  127. X            {
  128. X                Wait_Max = atoi(av[2]);
  129. X                ac -= 2; av += 2;
  130. X            }
  131. X            else
  132. X            {
  133. X                /* ignore bad flag */
  134. X                ac--; av++;
  135. X            }
  136. X        }
  137. X
  138. X        /*
  139. X         * Make sure that at least the following two
  140. X         * variables are set to default values
  141. X         */
  142. X        if (Font_Size <= 0)
  143. X            Font_Size = 8;
  144. X        if (Wait_Max < 0)
  145. X            Wait_Max = 0;
  146. X
  147. X        if ((ac == 3) || (ac == 4))
  148. X            do_it(ac, av);
  149. X        else
  150. X        {
  151. X            usage(my_name);
  152. X            clean_up(1);
  153. X        }
  154. X    }
  155. X
  156. X    /* Returns resouces to the Amiga */
  157. X    clean_up(0);
  158. X}
  159. X
  160. Xdo_it(ac, av)
  161. Xint ac;
  162. Xchar *av[];
  163. X{
  164. X    char font_name[20], screen_name[81], window_name[81];
  165. X    struct TextAttr ta;
  166. X    struct TextFont *old_font;
  167. X    struct RastPort *rast_port;
  168. X
  169. X    /* set up the parameters */
  170. X    sprintf(font_name,"%s.font", av[1]);
  171. X    strcpy(screen_name, av[2]);
  172. X    if (ac == 4)
  173. X        strcpy(window_name, av[3]);
  174. X    else
  175. X        window_name[0] = '\0';
  176. X
  177. X    /* my text attributes */
  178. X    ta.ta_Name = (UBYTE *) font_name;
  179. X    ta.ta_YSize = (long) Font_Size;
  180. X    ta.ta_Style = 0L;
  181. X    ta.ta_Flags = FPF_DISKFONT;
  182. X
  183. X    Font = (struct TextFont *) OpenDiskFont(&ta);
  184. X    if (Font == (struct TextFont *) NULL)
  185. X    {
  186. X        fprintf(stderr,"Cannot find font \"%s %d\"\n", font_name, Font_Size);
  187. X        clean_up(2);
  188. X    }
  189. X
  190. X    while (Wait_Max-- >= 0)
  191. X    {
  192. X        if (get_window(screen_name, window_name))
  193. X        /* Window is a global variable and it is set in get_window() */
  194. X        {
  195. X            rast_port = Window->RPort;
  196. X            old_font = rast_port->Font;
  197. X            /* see heading comment box 04/20/89 */
  198. X            if (Wait_Max >= 0) Delay(TEN_SECS);
  199. X            if ( SetFont(rast_port, Font))
  200. X                Font = old_font;     
  201. X            break;
  202. X        }
  203. X        else  if (Wait_Max >= 0) Delay(TEN_SECS);
  204. X    }
  205. X
  206. X    if (Window == (struct Window *) NULL)
  207. X    {
  208. X        fprintf(stderr,"Cannot find window \"%s\" in screen \"%s\"\n", window_name, screen_name);
  209. X        clean_up(2);
  210. X    }
  211. X}
  212. X
  213. Xget_window(sn, wn)
  214. Xchar *sn;
  215. Xchar *wn;
  216. X{
  217. X
  218. X    struct Screen *screen;
  219. X
  220. X    LockIBase(NULL);
  221. X
  222. X    for (screen = IntuitionBase->FirstScreen; screen != (struct Screen *) NULL; screen = screen->NextScreen)
  223. X    {
  224. X        if (strncmp(screen->Title, sn, strlen(sn)) == 0)
  225. X        {
  226. X            for (Window = screen->FirstWindow; Window != (struct Window *) NULL; Window = Window->NextWindow)
  227. X            {
  228. X                if (wn[0] == '\0')
  229. X                {
  230. X                    if (Window->Title == (UBYTE *) NULL)
  231. X                    {
  232. X                        UnlockIBase(NULL);
  233. X                        return(TRUE);
  234. X                    }
  235. X                }
  236. X                else if (strncmp(Window->Title, wn, strlen(wn)) == 0)
  237. X                {
  238. X                    UnlockIBase(NULL);
  239. X                    return(TRUE);
  240. X                }
  241. X            }
  242. X        }
  243. X    }
  244. X    Window = (struct Window *) NULL;
  245. X    UnlockIBase(NULL);
  246. X    return(FALSE);
  247. X}
  248. X
  249. Xclean_up(code)
  250. Xint code;
  251. X{
  252. X    if (Font) CloseFont(Font);
  253. X    if (DiskfontBase) CloseLibrary(DiskfontBase);
  254. X    if (IntuitionBase) CloseLibrary(IntuitionBase);
  255. X    if (GfxBase) CloseLibrary(GfxBase);
  256. X    exit(code);
  257. X}
  258. X
  259. XOpen_Libs()
  260. X{
  261. X    GfxBase = (long ) OpenLibrary("graphics.library", INTUI_REV);
  262. X    if (GfxBase == NULL)
  263. X    {
  264. X        fprintf(stderr,"Cannot open graphics.library\n");
  265. X        clean_up(1);
  266. X    }
  267. X
  268. X    IntuitionBase = (struct IntuitionBase *) OpenLibrary("intuition.library", INTUI_REV);
  269. X    if (IntuitionBase == (struct IntuitionBase *) NULL)
  270. X    {
  271. X        fprintf(stderr,"Cannot open intuition.library\n");
  272. X        clean_up(1);
  273. X    }
  274. X
  275. X    DiskfontBase = (long ) OpenLibrary("diskfont.library", INTUI_REV);
  276. X    if (DiskfontBase ==  NULL)
  277. X    {
  278. X        fprintf(stderr,"Cannot open diskfont.library\n");
  279. X        clean_up(1);
  280. X    }
  281. X}
  282. X
  283. Xprint_windows()
  284. X{
  285. X    struct Window *window;
  286. X    struct Screen *screen;
  287. X
  288. X    /* Should I lock the IntuitionBase? ... Nah ... */
  289. X    for (screen = IntuitionBase->FirstScreen; screen != (struct Screen *) NULL; screen = screen->NextScreen)
  290. X    {
  291. X        printf("Screen: \"%s\"\n", screen->Title);
  292. X        for (window = screen->FirstWindow; window != (struct Window *) NULL; window = window->NextWindow)
  293. X            printf("Window: \"%s\"\n", window->Title);
  294. X    }
  295. X}
  296. X
  297. SHAR_EOF
  298. echo "extracting fonz.doc"
  299. sed 's/^X//' << \SHAR_EOF > fonz.doc
  300. XFonz -- SetFont for program which opens its own screen.
  301. XVersion: 1.0
  302. X
  303. XWhy:
  304. X    Because I cannot stand topaz font on my communication 
  305. X    program's screen.
  306. X
  307. XUsage:
  308. X    fonz [-s font_size] [-w wait_max] font_name screen [window]
  309. X
  310. X    With no argument, "fonz" lists all screens each follows by its own
  311. X        windows.
  312. X
  313. X    -s font_size:
  314. X        Specify the font_size; default value == 8;
  315. X        /* I have not try anything other than 8 */
  316. X    -w wait_max:
  317. X        (just for you Jon ;-) ...)
  318. X        how long to wait around. One unit of wait_max == 10 secs.
  319. X        Often used to start "fonz" in advance and force "fonz" to
  320. X        wait until wait_max is expired or until the target window
  321. X        is opened.
  322. X        I use this alias
  323. Xalias c "runback df0:c/fonz -w 12 clean Handshake; run df2:c/handshake"
  324. X        to set up the "clean" font for my "Handshake" program.
  325. X    font_name: 
  326. X        is the font name available in fonts:
  327. X    screen:
  328. X        screen name. A list of screen names can be obtained by 
  329. X        using "fonz" with no argument.
  330. X    window:
  331. X        window name. A list of window names can also be obtained 
  332. X        using "fonz" with no argument.
  333. X        If "window" is omitted, the first window with the NULL title is 
  334. X        the target window.
  335. X
  336. X
  337. X    If you are not using the [-w] flag, the target window must 
  338. X    already be opened.
  339. X
  340. X    If there are more than one NULL title window on a screen, only the 
  341. X    first one is reachable.
  342. X    NULL Title Screen? Fix the source code if you want to deal with it.
  343. X
  344. X    Sometimes, old font came back. Chances are the program that owns 
  345. X    the target window had decided that it was time to refresh its font.
  346. X    All you can do is to flip back to the "CLI" and use "fonz" again.
  347. X
  348. X    use "SetFont" to set the font for the console window.
  349. X
  350. X    I would like very much to hear your bug report, comments ...
  351. X
  352. XAuthor:
  353. X    Hung Le (mott@ucscb.ucsc.edu  ...!ucbvax!ucscc!ucscb!edu)
  354. X
  355. X    Feel free to use the source codes if they are useful to you.
  356. X
  357. SHAR_EOF
  358. echo "extracting fonz.uu"
  359. sed 's/^X//' << \SHAR_EOF > fonz.uu
  360. X
  361. Xbegin 644 fonz
  362. XM```#\P`````````#``````````(```6?````K`````$```/I```%GT[Z!CI.R
  363. XM50``3EU.=4Y5_^P@;0`*+Q!(;?_L3KH)^%!/3KH#U`QM``$`"&8(3KH$Z&``2
  364. XM`-`@;0`*(F@`!`P1`"UF;DAZ`,H@;0`*+R@`!$ZZ"9103TI`9AP@;0`*+R@`/
  365. XM"$ZZ!3!83SE`@!95;0`(4*T`"F`Z2'H`FR!M``HO*``$3KH)8E!/2D!F'"!M@
  366. XM``HO*``(3KH$_EA/.4"`&%5M``A0K0`*8`A3;0`(6*T`"F"$2FR`%FX&.7P`4
  367. XM"(`62FR`&&P$0FR`&`QM``,`"&<(#&T`!``(9@XO+0`*/RT`"&%V7$]@'DAM=
  368. XM_^Q(>@`J2&R`VDZZ!1)/[P`,/SP``4ZZ`J943T)G3KH"GE1/3EU.=2US`"UW#
  369. XM`%5S86=E.B`E<R!;+7,@9F]N=%]S:7IE72!;+7<@=V%I=%]M87A=(&9O;G1?\
  370. XM;F%M92!S8W)E96X@6W=I;F1O=UT*`$Y5_SH@;0`*+R@`!$AZ`2Q(;?_L3KH(H
  371. XMN$_O``P@;0`*+R@`"$AM_YM.N@B44$\,;0`$``AF%"!M``HO*``,2&W_2DZZ)
  372. XM"'I03V`$0BW_2D'M_^PK2/]","R`%DC`.T#_1D(M_T@;?``"_TE(;?]"3KH4M
  373. XMJ%A/*4"`"DJL@`IF(C\L@!9(;?_L2'H`NDAL@-I.N@0>3^\`#C\\``).N@&RC
  374. XM5$\P+(`84VR`&$I`;6)(;?]*2&W_FTZZ`,Y03TI`9SX@;(`&*V@`,O\Z(&W_4
  375. XM.BMH`#3_/DIL@!AM"DAX`?1.NA,.6$\O+(`*+RW_.DZZ%`103TJ`9P8I;?\^+
  376. XM@`I@$DIL@!AM"DAX`?1.NA+D6$]@DDJL@`9F(DAM_YM(;?]*2'H`/DAL@-I.Z
  377. XMN@.(3^\`$#\\``).N@$<5$].74YU)7,N9F]N=`!#86YN;W0@9FEN9"!F;VYT^
  378. XM("(E<R`E9"(*`$-A;FYO="!F:6YD('=I;F1O=R`B)7,B(&EN('-C<F5E;B`B@
  379. XM)7,B"@!.5?_\0J=.NA-T6$\@;(`"*V@`//_\8```FB\M``A.N@OB6$\_`"\MN
  380. XM``@@;?_\+R@`%DZZ!MQ/[P`*2D!F;"!M__PI:``$@`9@6B!M``Q*$&8:(&R`G
  381. XM!DJH`"!F#D*G3KH3*%A/<`%.74YU8#`O+0`,3KH+D%A//P`O+0`,(&R`!B\H0
  382. XM`"!.N@:*3^\`"DI`9@Q"ITZZ$O183W`!8,H@;(`&*5"`!DJL@`9FH"!M__PK[
  383. XM4/_\2JW__&8`_V)"K(`&0J=.NA+&6$]P`&"<3E4``$JL@`IG"B\L@`I.NA*&M
  384. XM6$]*K(`.9PHO+(`.3KH1[EA/2JR``F<*+RR``DZZ$=Y83TJL@!)G"B\L@!).+
  385. XMNA'.6$\_+0`(3KH/XE1/3EU.=4Y5``!"ITAZ`(A.NA'^4$\I0(`22JR`$F86)
  386. XM2'H`A4AL@-I.N@'J4$\_/``!88!43T*G2'H`BTZZ$=)03RE`@`)*K(`"9AA(0
  387. XM>@")2&R`VDZZ`;Y03S\\``%.NO]45$]"ITAZ`(Y.NA&D4$\I0(`.2JR`#F88_
  388. XM2'H`BTAL@-I.N@&04$\_/``!3KK_)E1/3EU.=6=R87!H:6-S+FQI8G)A<GD`!
  389. XM0V%N;F]T(&]P96X@9W)A<&AI8W,N;&EB<F%R>0H`:6YT=6ET:6]N+FQI8G)AN
  390. XM<GD`0V%N;F]T(&]P96X@:6YT=6ET:6]N+FQI8G)A<GD*`&1I<VMF;VYT+FQIU
  391. XM8G)A<GD`0V%N;F]T(&]P96X@9&ES:V9O;G0N;&EB<F%R>0H``$Y5__@@;(`"L
  392. XM*V@`//_X8$8@;?_X+R@`%DAZ`$9.N@4\4$\@;?_X*V@`!/_\8!H@;?_\+R@`\
  393. XM($AZ`#9.N@4>4$\@;?_\*U#__$JM__QFX"!M__@K4/_X2JW_^&:T3EU.=5-CZ
  394. XM<F5E;CH@(B5S(@H`5VEN9&]W.B`B)7,B"@!.50``2.<,("1M``@,$@`@9P8,P
  395. XM$@`)9@12BF#P>@`,$@`M9@9Z`5**8`@,$@`K9@)2BG@`8!8@2E**$!!(@#($`
  396. XMPOP`"M!!.`"8?``P$!)(@%)`0>R`+`@P``(``&;82D5G!C`$1$!@`C`$3-\$;
  397. XM,$Y=3G5.50``*6T`"()J2&T`$"\M``Q(>@`.3KH$_D_O``Q.74YU3E4``"\L(
  398. XM@FH_+0`(3KH(T%Q/3EU.=6%P0^R":D7L@FJUR68.,CP`$6L(=``BPE')__PI<
  399. XM3X)V+'@`!"E.@GI(YX"`""X`!`$I9Q!+^@`(3J[_XF`&0J?S7TYS0_H`($ZN1
  400. XM_F@I0()^9@PN/``#@`=.KO^48`1.N@`:4$].=61O<RYL:6)R87)Y`$GY``!_6
  401. XM_DYU3E4``"\*2'D``0``,"R"9L'\``8O`$ZZ#O103RE`@H)F%$*G2'D``0``0
  402. XM3KH.N%!/+FR"=DYU(&R"@D)H``0@;(*",7P``0`0(FR"@C-\``$`"B!L@G8@^
  403. XM+()VD*@`!%"`*4""AB!L@H8@O$U!3EA"ITZZ#JA83R1`2JH`K&<N+RT`#"\MP
  404. XM``@O"DZZ`+)/[P`,.7P``8**(&R"@@!H@```!"!L@H(`:(````I@1$AJ`%Q.%
  405. XMN@[&6$](:@!<3KH.@EA/*4""C"!L@HQ*J``D9Q`@;(*,(F@`)"\13KH-IEA/*
  406. XM+RR"C"\*3KKX:%!/*6R"C(*03KH-LB!L@H(@@$ZZ#=(@;(*"(4``!F<62'@#S
  407. XM[4AZ`"Q.N@VN4$\@;(*"(4``#"\L@I`_+(*43KKX+EQ/0F=.N@OJ5$\D7TY=X
  408. XM3G4J`$Y5``!(YPPP)&T`$"!M``@@*`"LY8`H`"!$("@`$.6`)D`0$TB`2,#0\
  409. XMK0`,5(`Y0(*60J<P+(*62,`O`$ZZ#9)03RE`@IAF"$S?##!.74YU$!-(@#\`H
  410. XM($M2B"\(+RR"F$ZZ`41/[P`*2'H!.A`32(!(P-"L@I@O`$ZZ`:A03S\M``XOT
  411. XM"B\L@IA.N@%$3^\`"D)L@I0F;(*8)$L0$TB`.@"P?``@9QBZ?``)9Q*Z?``,=
  412. XM9PRZ?``-9P:Z?``*9@12BV#8#!,`(&UZ#!,`(F8N4HL@2U*+$!!(@#H`9QX@)
  413. XM2E**$(6Z?``B9A`,$P`B9@12BV`&0BK__V`"8-9@."!+4HL0$$B`.@!G)KI\^
  414. XM`"!G(+I\``EG&KI\``QG%+I\``UG#KI\``IG""!*4HH0A6#.($I2BD(02D5FA
  415. XM`E.+4FR"E&``_UI"$D*G,"R"E%)`2,#E@"\`3KH,?%!/*4""D&8(0FR"E&``&
  416. XM_N1Z`"9L@IA@'C`%2,#E@"!L@I`ABP@`+PM.N@5J6$]20$C`U\!21;IL@I1M#
  417. XMW#`%2,#E@"!L@I!"L`@`8`#^IB``3.\#```$(`@R+P`,8`(0V5?)__QG!E)!W
  418. XM8`)"&%')__Q.=3`\?_]@!#`O``P@;P`$2AAF_%-((F\`"%-`$-E7R/_\9P)"9
  419. XM$"`O``1.=3`\?_]@!#`O``Q30&L4(&\`!")O``BQ"68,4TA*&%?(__9P`$YU-
  420. XM8P1P`4YU</].=2!O``0@"")O``@0V6;\3G5.50``+P0I;0`(@FY(;0`0+RT`T
  421. XM#$AZ`!I.N@#<3^\`##@`(&R";D(0,`0H'TY=3G5.50``(&R";E*L@FX0+0`)8
  422. XM$(!(@,!\`/].74YU3E4``$AM``PO+0`(2'H$<$ZZ`)A/[P`,3EU.=4Y5``!("
  423. XMYP@@)&T`#@QM``0`$F8((&T`""@08!Q*;0`,;PP@;0`(<``P$"@`8`H@;0`(>
  424. XM,!!(P"@`0FT`$DIM``QL$$1M``Q*A&P(1(0[?``!`!(R+0`,2,$@!$ZZ`XY!S
  425. XM[(`:4XH4L```,BT`#$C!(`1.N@.$*`!FVDIM`!)G!E.*%+P`+2`*3-\$$$Y=:
  426. XM3G5.5?\B2.<(,"1M``@F;0`,0FW_^BMM`!#__"!+4HL0$$B`.`!G``+LN'P`B
  427. XM)68``LI"+?\P.WP``?_X.WP`(/_V.WPG$/_T($M2BQ`02(`X`+!\`"UF#D)MU
  428. XM__@@2U*+$!!(@#@`N'P`,&80.WP`,/_V($M2BQ`02(`X`+A\`"IF&"!M__Q4U
  429. XMK?_\.U#_\B!+4HL0$$B`.`!@,D)M__)@'#`M__+!_``*T$20?``P.T#_\B!+V
  430. XM4HL0$$B`.``P!%)`0>R`+`@P``(``&;4N'P`+F9:($M2BQ`02(`X`+!\`"IF6
  431. XM&"!M__Q4K?_\.U#_]"!+4HL0$$B`.`!@,D)M__1@'#`M__3!_``*T$20?``P9
  432. XM.T#_]"!+4HL0$$B`.``P!%)`0>R`+`@P``(``&;4.WP``O_PN'P`;&82($M2F
  433. XMBQ`02(`X`#M\``3_\&`0N'P`:&8*($M2BQ`02(`X`#`$2,!@>#M\``C_[F`6O
  434. XM.WP`"O_N8`X[?``0_^Y@!CM\__;_[C\M__!(;?\P/RW_[B\M__Q.NOWD3^\`E
  435. XM#"M`_^HP+?_P2,#1K?_\8%H@;?_\6*W__"M0_^HO+?_J3KH"#%A/.T#_\&!*I
  436. XM(&W__%2M__PX$$'M_R\K2/_J$(1@*)"\````8V?B4X!GE)"\````"V<`_W19P
  437. XM@&>T58!G`/]R5X!G`/]T8,Q![?\PD>W_ZCM(__`P+?_PL&W_]&\&.VW_]/_PV
  438. XM2FW_^&=H(&W_Z@P0`"UG"B)M_^H,$0`K9BX,;0`P__9F)E-M__(@;?_J4JW_0
  439. XMZA`02(`_`$Z25$^P?/__9@IP_TS?#!!.74YU8!8_+?_V3I)43[!\__]F!'#_O
  440. XM8.12;?_Z,"W_\E-M__*P;?_P;MQ";?_N8"`@;?_J4JW_ZA`02(`_`$Z25$^PE
  441. XM?/__9@1P_V"P4FW_[B!M_^I*$&<*,"W_[K!M__1MSC`M_^[1;?_Z2FW_^&8HB
  442. XM8!@_/``@3I)43[!\__]F!G#_8`#_>%)M__HP+?_R4VW_\K!M__!NVF`6/P1.$
  443. XMDE1/L'S__V8&</]@`/]24FW_^F``_0HP+?_Z8`#_0DCG2`!"A$J`:@1$@%)$0
  444. XM2H%J!D2!"D0``6$^2D1G`D2`3-\`$DJ`3G5(YT@`0H1*@&H$1(!21$J!:@)$]
  445. XM@6$:(`%@V"\!81(@`2(?2H!.=2\!808B'TJ`3G5(YS``2$%*068@2$$V`30`Y
  446. XM0D!(0(##(@!(0#("@L,P`4)!2$%,WP`,3G5(028!(@!"04A!2$!"0'0/T(#3U
  447. XM@;:!8@22@U)`4<K_\DS?``Q.=2!O``0@"$H89OR1P"`(4X!.=4Y5``!(;(#$T
  448. XM/RT`"$ZZ``A<3TY=3G5.50``+P0X+0`(+RT`"C\$3KH`,%Q/N'P`"F8D(&T`!
  449. XM"A`H``Q(@`@```=G%#\\__\O+0`*3KH`]EQ/*!].74YU8/A.50``+PHD;0`*L
  450. XM(%*QZ@`$91@P+0`(P'P`_S\`+PI.N@#*7$\D7TY=3G4@4E*2$"T`"1"`2(#`(
  451. XM?`#_8.A.50``+PI![("N)$@@2M7\````%B\(81!83T'L@F:UR&7J)%].74YU8
  452. XM3E4``$CG""`D;0`(>``@"F8*</],WP003EU.=4HJ``QG4@@J``(`#&<,/SS_G
  453. XM_R\*851<3S@`$"H`#4B`/P!.N@3R5$^(0`@J``$`#&<*+RH`"$ZZ`C!83P@JK
  454. XM``4`#&<4+RH`$DZZ`L)83R\J`!).N@(46$]"DD*J``1"J@`(0BH`##`$8(Y.Z
  455. XM5?_^2.<(("1M``A!^O]$*4B"G`@J``0`#&<*</],WP003EU.=0@J``(`#&<PU
  456. XM(!*0J@`(.``_!"\J``@0*@`-2(`_`$ZZ`H!03[!$9Q`(Z@`$``Q"DD*J``1PH
  457. XM_V#`#&W__P`,9A`(J@`"``Q"DD*J``1P`&"H2JH`"&8(+PI.N@":6$\,:@`!W
  458. XM`!!F*AMM``W__S\\``%(;?__$"H`#4B`/P!.N@(B4$^P?``!9J`P+0`,8`#_V
  459. XM:B2J``@P*@`02,#0J@`()4``!`CJ``(`#"!24I(0+0`-$(!(@,!\`/]@`/\^M
  460. XM3E4``"\*0>R`KB1(2BH`#&<8U?P````60>R"9K7(90AP`"1?3EU.=6#B0I)"!
  461. XMJ@`$0JH`""`*8.I.5?_\+PHD;0`(/SP$`$ZZ`,!43RM`__QF\``$`$"`*`
  462. XMT+P````.)4``""1?3EU.=35\!```$`CJ``$`#"5M__P`"!`J``U(@#\`3KH`G
  463. XMXE1/2D!G!@`J`(``#&#.3E4``$CG`#`D;()R8!0F4B`J``10@"\`+PI.N@0@$
  464. XM4$\D2R`*9NA"K()R3-\,`$Y=3G5.50``+PI!^O_&*4B"H$*G("T`"%"`+P!.'
  465. XMN@/.4$\D0$J`9@AP`"1?3EU.=22L@G(E;0`(``0I2H)R(`I0@&#F3E4``'``#
  466. XM,"T`""\`8;)83TY=3G5.50``2.<`,)?+)&R"<F`.(&T`"%&(L<IG$B9*)%(@Z
  467. XM"F;N</],WPP`3EU.=2`+9P0FDF`$*5*"<B`J``10@"\`+PI.N@-R4$]P`=
  468. XM3E4``"\*,"T`",'\``8D0-7L@H)*;0`(;0XP+0`(L&R"9FP$2I)F#CE\``*")
  469. XMI'#_)%].74YU,"T`",'\``8@;(*"+S`(`$ZZ`JA83TJ`9P1P`6`"<`!@V$Y5/
  470. XM```O+0`(3KH"<EA/2H!F#DZZ`GPY0(*D</].74YU<`!@^$Y5``!(YPP@."T`R
  471. XM"$ZZ`'`P!,'\``8D0-7L@H)*1&T*N&R"9FP$2I)F$#E\``*"I'#_3-\$,$Y=)
  472. XM3G4P*@`$P'P``V8*.7P`!8*D</]@Y'``,"T`#B\`+RT`"B\23KH".$_O``PJ*
  473. XM`+"\_____V8,3KH!_#E`@J1P_V"X(`5@M$Y5__Q(>!``0J=.N@*@4$\K0/_\$
  474. XM"```#&<22FR"BF8(("W__$Y=3G5.N@`&<`!@]$Y5``!(>``$2'H`'DZZ`=(O6
  475. XM`$ZZ`=1/[P`,/SP``4ZZ``Q43TY=3G5>0PH`3E4``$JL@IQG!B!L@IQ.D#\M+
  476. XM``A.N@`(5$].74YU3E7__"\$,"T`"$C`*T#__$JL@H)G*'@`8`H_!$ZZ`-!4G
  477. XM3U)$N&R"9FWP,"R"9L'\``8O`"\L@H).N@&\4$]*K(*@9P8@;(*@3I!*K(*FV
  478. XM9PHO+(*F3KH!<EA/2JR"JF<*+RR"JDZZ`6)83TJL@JYG"B\L@JY.N@%26$\L2
  479. XM>``$""X`!`$I9Q0O#4OZ``I.KO_B*E]@!D*G\U].<TJL@HQF,$JL@IAG*#`L#
  480. XM@I9(P"\`+RR"F$ZZ`4)03S`L@I120$C`Y8`O`"\L@I!.N@$L4$]@#DZZ`1PO1
  481. XM+(*,3KH!3%A/("W__"YL@G9.=2@?3EU.=4Y5``!(YPX@."T`"#`$P?P`!B1`0
  482. XMU>R"@DI$;0JX;()F;`1*DF80.7P``H*D</],WP1P3EU.=3`J``3`?(``9@@OH
  483. XM$DZZ``I83T*2<`!@X"(O``0L;()^3N[_W"(O``0L;()^3N[_@B(O``0L;()^J
  484. XM3N[_.B(O``0L;()^3N[_N"QL@GY.[O_*+&R"?D[N_WPB+P`$+&R"?D[N_RA,=
  485. XM[P`&``0L;()^3N[_XBQL@GY.[O_$3.\`#@`$+&R"?D[N_]!(YP$$3.\@@``,0
  486. XM+&R">DZN_Y1,WR"`3G5.^@`"(F\`!"QL@GI.[OYB3.\``P`$+&R">D[N_SHBM
  487. XM;P`$+&R">D[N_MHL;()Z3N[_?")O``0@+P`(+&R">D[N_RX@;P`$+&R">D[NR
  488. XM_HQ.^@`"+&R">B)O``0@+P`(3N[]V")O``0L;()Z3N[^ADSO``,`!"QL@GI.R
  489. XM[O[.(&\`!"QL@GI.[OZ`(F\`!"QL@!).[O^R(F\`!"!O``@L;(`23N[_OBQLN
  490. XM@`(@+P`$3N[^8BQL@`(@;P`$3N[^7"!O``0L;(`.3N[_X@`````#[`````$`Z
  491. XM```!```&L`````````/R```#Z@```)H`````````````````````````````S
  492. XM```P,3(S-#4V-S@Y86)C9&5F````("`@("`@("`@,#`P,#`@("`@("`@("`@R
  493. XM("`@("`@(""00$!`0$!`0$!`0$!`0$!`#`P,#`P,#`P,#$!`0$!`0$`)"0D)L
  494. XM"0D!`0$!`0$!`0$!`0$!`0$!`0$!`4!`0$!`0`H*"@H*"@("`@("`@("`@("X
  495. XM`@("`@("`@("0$!`0"```````````````````0`````!````````````````T
  496. XM``````$!`````0`````````````````````!`@````$`````````````````'
  497. XM`````````````````````````````````````````````````````````````
  498. XM`````````````````````````````````````````````````````````````
  499. XM`````````````````````````````````````````````````````````````
  500. XM`````````````````````````````````````````````````````````````
  501. XM`````````````````````````````````````````````````````````````
  502. XM`````````````````````````````````````````````````````````````
  503. XM`````````````````````````````````````````````````````````````
  504. XM`````````````````````````````````````````````````````````````
  505. X9````````%``````#\@```^L````!```#\@``M
  506. X``
  507. Xend
  508. Xsize 6460
  509. SHAR_EOF
  510. echo "End of archive 1 (of 1)"
  511. # if you want to concatenate archives, remove anything after this line
  512. exit
  513.